home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / wgdb-42.lha / wgdb-4.2 / gdb / ieee-float.h < prev    next >
C/C++ Source or Header  |  1992-09-11  |  2KB  |  67 lines

  1. /* IEEE floating point support declarations, for GDB, the GNU Debugger.
  2.    Copyright (C) 1991 Free Software Foundation, Inc.
  3.  
  4. This file is part of GDB.
  5.  
  6. This program is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2 of the License, or
  9. (at your option) any later version.
  10.  
  11. This program is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with this program; if not, write to the Free Software
  18. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. /* Parameters for extended float format:  */
  21.  
  22. struct ext_format {
  23.   unsigned totalsize;        /* Total size of extended number */
  24.   unsigned signbyte;        /* Byte number of sign bit */
  25.   unsigned char signmask;    /* Mask for sign bit */
  26.   unsigned expbyte_h;        /* High byte of exponent */
  27.   unsigned expbyte_l;        /* Low  byte of exponent */
  28.   unsigned manbyte_h;        /* High byte of mantissa */
  29.   unsigned manbyte_l;        /* Low  byte of mantissa */
  30. };
  31.  
  32. #define    TOTALSIZE    ext_format->totalsize
  33. #define    SIGNBYTE    ext_format->signbyte
  34. #define    SIGNMASK    ext_format->signmask
  35. #define EXPBYTE_H    ext_format->expbyte_h
  36. #define EXPBYTE_L    ext_format->expbyte_l
  37. #define    MANBYTE_H    ext_format->manbyte_h
  38. #define    MANBYTE_L    ext_format->manbyte_l
  39.  
  40. /* Actual ext_format structs for various machines are in the *-tdep.c file
  41.    for each machine.  */
  42.  
  43. #define    EXT_EXP_NAN    0x7FFF    /* Exponent value that indicates NaN */
  44. #define    EXT_EXP_BIAS    0x3FFF    /* Amount added to "true" exponent for ext */
  45. #define    DBL_EXP_BIAS     0x3FF    /* Ditto, for doubles */
  46.  
  47. /* Convert an IEEE extended float to a double.
  48.    FROM is the address of the extended float.
  49.    Store the double in *TO.  */
  50.  
  51. extern void
  52. ieee_extended_to_double (
  53. #ifdef __STDC__
  54.     struct ext_format *ext_format, char *from, double *to
  55. #endif
  56. );
  57.  
  58. /* The converse: convert the double *FROM to an extended float
  59.    and store where TO points.  */
  60.  
  61. void
  62. double_to_ieee_extended (
  63. #ifdef __STDC__
  64.     struct ext_format *ext_format, double *from, char *to
  65. #endif
  66. );
  67.